// 属性验证
// const target = {
//   age: 20
// }

// const proxy = new Proxy(target, {
//   set(target, prop, value) {
//     if (typeof value !== 'number') {
//       console.log(1);
//       return false
//     } else {
//       return Reflect.set(...arguments)
//     }
//   }
// })

// proxy.age = 21
// console.log(proxy.age);
// proxy.age = '21'
// console.log(proxy.age);

// 函数与构造参数验证
// const media = function(...nums) {
//   return nums.sort()[Math.floor(nums.length / 2)]
// }

// const proxy1 = new Proxy(media, {
//   apply(target, thisArg, argumentList) {
//     console.log(argumentList);
//     argumentList.forEach(argument => {
//       if (typeof argument !== 'number') {
//         console.log(argument);
//         throw '该参数不是数字'
//       }
//     })
//     return Reflect.apply(...arguments)
//   }
// })

// proxy1(1, 2, 3, 4)
// proxy1(1, '1')

// function median(...nums) {
//   return nums.sort()[Math.floor(nums.length / 2)];
// }
// const proxy = new Proxy(median, {
//   apply(target, thisArg, argumentsList) {
//     for (const arg of argumentsList) {
//       if (typeof arg !== 'number') {
//         throw 'Non-number argument provided';
//       }
//     }
//     return Reflect.apply(...arguments);
//   }
// });
// proxy(4, 7, 1)
// console.log(); // 4

// class User {
//   constructor(id) {
//     this.id_ = id
//   }
// }

// const proxy = new Proxy(User,{
//   connstruct(target,argumentsList,newTarget) {

//   }
// })